package com.tosee.ws.model;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlRootElement;

/**
 * Classe mère des objets WS.
 * 
 * @author robint
 */
@XmlRootElement
public class WSListe<T extends WSObject> extends WSObject {

    /**
     * Liste de WSObject
     */
    protected List<T> objet;

    /**
     * Nombre de résultats total (pour la pagination)
     */
    protected Integer nbTotalResult;

    /**
     * Code de la liste (utilisé dans certains cas)
     */
    private String codeListe;

    /**
     * Constructeur par défaut
     */
    public WSListe() {
        super();
    }

    /**
     * Constructeur initialisant la taille de la liste.
     */
    public WSListe(int _tailleListe) {
        super();
        objet = new ArrayList<T>(_tailleListe);
    }

    /**
     * Constructeur.
     * 
     * @param listeObjets
     * @param nbTotalResult
     */
    public WSListe(List<T> listeObjets, Integer nbTotalResult) {
        super();
        this.objet = listeObjets;
        this.nbTotalResult = nbTotalResult;
    }

    /**
     * Méthode d'ajout d'un objet à la liste
     * 
     * @param _objet l'objet à ajouter
     */
    public void ajouterObjet(T _objet) {
        if(objet == null) {
            objet = new ArrayList<T>();
        }
        objet.add(_objet);
    }

    /**
     * @return the objet
     */
    public List<T> getObjet() {
        return objet;
    }

    /**
     * @param objet the objet to set
     */
    public void setObjet(List<T> objet) {
        this.objet = objet;
    }

    /**
     * @return the codeListe
     */
    public String getCodeListe() {
        return codeListe;
    }

    /**
     * @param codeListe the codeListe to set
     */
    public void setCodeListe(String codeListe) {
        this.codeListe = codeListe;
    }

    /**
     * @return the nbTotalResult
     */
    public Integer getNbTotalResult() {
        return nbTotalResult;
    }

    /**
     * @param nbTotalResult the nbTotalResult to set
     */
    public void setNbTotalResult(Integer nbTotalResult) {
        this.nbTotalResult = nbTotalResult;
    }

}
